class Solution {
public:
    int totalFruit(vector<int>& f) {
        int mleft=0;
        int mright=0;
        int sz=f.size();
        int mem=0;
        unordered_map<int,int> hash;
        while(mright<sz)
        {
            hash[f[mright]]++;
            while(hash.size()>2)
            {
                hash[f[mleft]]--;
                if(hash[f[mleft]]==0)
                    hash.erase(f[mleft]);
                mleft++;
            }
            mem=max(mem,mright-mleft+1);
            mright++;
        }
        return mem;
    }
};
